// poj3904
// 题意：给定n(<=10000)个数，每个数是不超过10000的正整数，现在问有多少个
//       四元组(a, b, c, d)使得gcd(a, b, c, d)=1。
//
// 题解：我们考虑逆命题，gcd(a, b, c, d)>1。那么我们对于每个数仅有素因子
//       相乘的数d(d>=2)，我们利用容斥原理可求：
//           sum=sigma( (-1)^(deg(d)-1)*f(d) )
//       其中deg(d)是表示素因子的个数，f(d)是表示公约数整除d的组合的个数。
//       我们可以预处理出每个可能的因子对应有多少个数整除它记做count[i]，
//       那么f(d)就是C(count[i], 4)（组合数）。
//
//       还有一种方法就是倒过来对于每个因子i，sum加上C(count[i], 4)，
//       然后对于i的所有因子j，count[j] -= count[i]，避免了重复算。
//
//       最后的答案就是C(n, 4) - sum。
//
// run: $exec < bfdiff.in
#include <iostream>
#include <cstring>
#include <vector>

int const maxn = 10007;
int count[maxn];
int deg[maxn];
bool single[maxn];
std::vector<int> fact[maxn];
int n;

long long c4(long long x)
{
	return (x - 3) * (x - 2) * (x - 1) * x / 24;
}

int main()
{
	std::ios::sync_with_stdio(false);
	for (int i = 2; i < maxn; i++) {
		for (int j = i; j < maxn; j += i) fact[j].push_back(i);
		int t = i;
		single[i] = true;
		for (int j = 2; j * j <= t; j++)
			if (!(t % j)) {
				deg[i]++;
				t /= j;
				if (!(t % j)) single[i] = false;
				while (!(t % j)) t /= j;
			}
		if (t) deg[i]++;
	}
	while (std::cin >> n) {
		std::memset(count, 0, sizeof(count));
		for (int i = 0, x; i < n; i++) {
			std::cin >> x;
			for (int j = 0; j < (int)fact[x].size(); j++)
				count[fact[x][j]]++;
		}
//		for (int i = 1; i <= maxn; i++) if (count[i]) std::cout << "count[" << i << "] = " << count[i] << '\n';
		long long ans = 0;
		for (int i = 2; i < maxn; i++) {
			if (!single[i]) continue;
			if (deg[i] & 1) ans += c4(count[i]);
			else ans -= c4(count[i]);
		}
		std::cout << c4(n) - ans << '\n';
	}
}

